#!/usr/bin/env python
# -*- coding:utf-8 -*-

"""
@author zyx
@since 2022/2/13 17:35
@file: c05_回调函数.py
"""

import asyncio
import time


# 特殊的函数
async def get_request(url):
    print('正在请求的网址是:', url)
    time.sleep(2)
    print('请求网址结束！')
    return 123


# 回调函数的封装:必须有一个参数
def t_callback(t):
    # 参数t就是任务对象
    # print('回调函数的参数t是：',t)
    # print('我是任务对象的回调函数！')
    data = t.result()  # result()函数就可以返回特殊函数内部的返回值
    print('我是任务对象的回调函数！,获取到特殊函数的返回值为:', data)


# 创建协程对象
c = get_request('www.1.com')
# 创建任务对象
task = asyncio.ensure_future(c)
# 给任务对象绑定回调函数:add_done_callback的参数就是回调函数的名字
task.add_done_callback(t_callback)

# 创建事件循环对象
loop = asyncio.get_event_loop()
loop.run_until_complete(task)
